package scene;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import yaut.ENV;



/**
 * Permet de rajouter un KeyListener (ecouteur clavier) sur SceneEditeur la scene
 * afin de pouvoir utiliser le clavier sur la scene
 * 
 * @author Delmas Gabriel
 */
public class SceneKeyListener implements KeyListener
{
	private static final int MAXPIXELS=10;
    
	private SceneEditeur scene;
	private int m_keyCode = -1;
	private int nbrPixels=1;

	
	public SceneKeyListener(SceneEditeur scene)
	{
		this.scene=scene;
		this.scene.addKeyListener(this);
		
	}
	
	public void keyPressed(KeyEvent e)
	{
		int keyCode = e.getKeyCode();

		if ( keyCode != m_keyCode )
		{
			m_keyCode = keyCode;
		}
		else
		{
			if(nbrPixels<MAXPIXELS)
				nbrPixels++;
		}
		
		//Touche 'Haut'
		if(keyCode==KeyEvent.VK_UP)
		{
			this.scene.avancerComposant(Touche.HAUT, nbrPixels);
		}
		//Touche 'Bas'
		if(keyCode==KeyEvent.VK_DOWN)
		{
			this.scene.avancerComposant(Touche.BAS, nbrPixels);
		}
		//Touche 'Droite'
		if(keyCode==KeyEvent.VK_RIGHT)
		{
			this.scene.avancerComposant(Touche.DROITE, nbrPixels);
		}
		//Touche 'Gauche'
		if(keyCode==KeyEvent.VK_LEFT)
		{
			this.scene.avancerComposant(Touche.GAUCHE, nbrPixels);
		}
		
		//Touche 'Suppr'
		if(e.getKeyCode()==KeyEvent.VK_DELETE)
		{
			this.scene.supprimerFiguresSelectionner();
		}
		
		//Touche F2 Exporte en image le diagramme en cours
		if(e.getKeyCode()==KeyEvent.VK_F2)
		{
			ENV.FRAME.exporterDiagramme();
		}
		
		//Raccourci Ctrl+A Selection de tous les objets de la scene
		if((e.getModifiers()==KeyEvent.CTRL_MASK) && (keyCode==KeyEvent.VK_A))
		{
			this.scene.selectionnerTousLesComposants();
		}
		
		//Raccourci Ctrl+S Sauvegarde le diagramme en cours
		if((e.getModifiers()==KeyEvent.CTRL_MASK) && (keyCode==KeyEvent.VK_S))
		{
			ENV.FRAME.sauvegarderDiagramme();
		}
		
		//Raccourci Ctrl+W Ferme le diagramme en cours
		if((e.getModifiers()==KeyEvent.CTRL_MASK) && (keyCode==KeyEvent.VK_W))
		{
			ENV.FRAME.fermerDiagramme();
		}
		
		//Raccourci Ctrl+T Ajoute un nouveau diagramme
		if((e.getModifiers()==KeyEvent.CTRL_MASK) && (keyCode==KeyEvent.VK_T))
		{
			ENV.FRAME.ajouterDiagramme(true);
		}
		
		//Raccourci Ctrl+N Creer un nouveau projet
		if((e.getModifiers()==KeyEvent.CTRL_MASK) && (keyCode==KeyEvent.VK_N))
		{
			ENV.FRAME.nouveauProjet();
		}
		
		//Raccourci Ctrl+Q Fermeture de l'application
		if((e.getModifiers()==KeyEvent.CTRL_MASK) && (keyCode==KeyEvent.VK_Q))
		{
			ENV.FRAME.fermerApplication();
		}
		
		e.consume();
	}

	public void keyReleased(KeyEvent e)
	{
		m_keyCode = -1;
		nbrPixels = 1;
		
	}

	public void keyTyped(KeyEvent e)
	{
		
	}

}
